package main

import (
	"fmt"
	// "unicode"
	// "strings"
)

func main() {
	// 1.判断字符串中汉字的数量
	// 难点是判断一个字符是汉字
	// s1 := "Hello沙河有沙又有河Σ"
	// fmt.Println(len(s1)) // 汉字占3个字节
	// for i := 0; i < len(s1); i++ {
	// 	fmt.Println(s1[i])
	// }
	// 	func Is(rangeTab *RangeTable, r rune) bool
	// 函数报告r是否在rangeTab指定的字符范围内。
	// var count int
	// for _, v := range s1 {
	// 	fmt.Println(v)
	// 	if unicode.Is(unicode.Han, v) {
	// 		count++
	// 	}
	// }
	// fmt.Println(count)

	// 2. how do you do 单词出现的次数
	// 把字符串按空格切割得到切片
	// 遍历切片存储到一个map
	// 累加出现次数
	// s2 := "how do you do"
	// s3 := strings.Split(s2, " ")
	// fmt.Println(s3)
	// m1 := make(map[string]int)
	// for _, w := range s3 {
	// 	fmt.Println(w)
	// 	// 1. 如果原来map中不存在w这个key那么出现次数=1
	// 	// 2. 如果map中存在w这个key,那么出现次数+1
	// 	if _, ok := m1[w]; !ok {
	// 		m1[w] = 1
	// 	} else {
	// 		m1[w]++
	// 	}
	// }
	// // 3.累加出现的次数
	// for key, value := range m1 {
	// 	fmt.Println(key, value)
	// }

	// 回文判断
	// 字符串从左往右读和从右往左读是一样的,那么就是回文

	// 上海自来水来自上海
	// 山西运煤车煤运西山
	// 黄山落叶松叶落山黄
	// 解题思路
	//

	ss := "山西运煤车煤运西山"
	r := make([]rune, 0, len(ss))
	// fmt.Println(r)
	for _, c := range ss {
		r = append(r, c)
	}
	for i := 0; i < len(r)/2; i++ {
		fmt.Println(i)
		// 0 7 1 6 2 5 3 4   4 4
		if r[i] != r[len(r)-1-i] {
			fmt.Println("不是回文")
			return
		}
	}
	fmt.Println("是回文")
	// for i, _ := range ss {
	// 	// ss[i] = c
	// 	if ss[i] != ss[len(ss)-1-i] {
	// 		fmt.Println("不是回文")
	// 		return
	// 	}
	// }
	// for i := 0; i < len(ss)/2; i++ {
	// 	// len(ss)/2 商4余1
	// }

}
